package com.examination.client.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.examination.client.domian.dto.*;
import com.examination.client.domian.vo.*;
import com.examination.client.entity.CourierInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 快递信息入库表 服务类
 * </p>
 *
 * @author xiaodong
 * @since 2021-10-17
 */
public interface ICourierInfoService extends IService<CourierInfo> {

    CourierInfo save(CourierInfoDTO courierInfoDTO) throws Exception ;

    CourierInfo saveSubsite(CourierInfoDTO courierInfoDTO) throws Exception ;

    Boolean modify(CourierInfoDTO courierInfoDTO);

    Boolean modifyPhone(CourierInfoDTO courierInfoDTO);

    TodayStatisticsVO statistics(TodayStatisticsQueryDTO todayStatisticsQueryDTO);

    CourierInfoDetailVO detail(String id)throws Exception ;

    List<TodaySiteStatisticsVO> siteCourierList(TodayStatisticsQueryDTO todayStatisticsQueryDTO);

    TodaySiteStorageStatisticsVO todaySiteStorageStatistics();

    List<CourierSiteInfoDTO> siteCourierList1(TodayStatisticsQueryDTO todayStatisticsQueryDTO);

    Boolean batchDelivery(DeliveryDTO deliveryDTO);

    Boolean batchSaveMain(DeliveryDTO deliveryDTO);

    List<String> batchSaveChild(BatchDeliveryDTO batchDeliveryDTO);

    Boolean delete(String id,Integer type);

    CourierInfo delivery(CourierInfoDTO courierInfoDTO)throws Exception;

    Page<CourierInfoDetailVO> list(CourierInfoListQueryDTO courierInfoListQueryDTO) throws Exception;

    List<CourierInfo> messageList(CourierInfoListQueryDTO courierInfoListQueryDTO) throws Exception;

    ScanStatisticsVO scanStatistics(ScanStatisticsDTO scanStatisticsDTO);

    void getExcel(HttpServletResponse response)throws Exception;

    QueryStatisticsVO statisticsReconciliation(StatisticsQueryDTO statisticsQueryDTO);

    void statisticsExcel(StatisticsQueryDTO statisticsQueryDTO,HttpServletResponse response)throws Exception;

    Boolean storageStatus(String code);

    DeliveryInfoVO info(String courierCode)throws Exception;

    List<ScanInfoVO> infoWxs(String courierCode,String userName,String password)throws Exception;

    Page<CourierInfo>  abnormalList(StatisticsQueryDTO statisticsQueryDTO);

    void abnormalExcel(StatisticsQueryDTO statisticsQueryDTO,HttpServletResponse response)throws Exception;

    Page<CourierInfoDetailVO> myList(QueryCourierListDTO queryCourierListDTO)throws Exception ;

    Integer myNum(QueryCourierListDTO QueryCourierListDTO);

    ScanInfoVO scanInfo(String courierCode,Integer nextSiteId)throws Exception;

    List<HiddenPhoneVO> hiddenPhoneList(HiddenPhoneQueryDTO hiddenPhoneQueryDTO)throws Exception;

}
